#ifndef __BWLIB_TYPE_TRAITS_ALL_SAME_H__
#define __BWLIB_TYPE_TRAITS_ALL_SAME_H__
#include "../config.h"

#ifdef __BWLIB_CXX11
#include <type_traits>

namespace bwlib
{
	template<typename T0, typename T1, typename... Types>
	struct all_same : std::conditional<
		all_same<T1, Types...>::value && std::is_same<T0, T1>::value, 
		std::true_type, std::false_type>::type {};

	template<typename T0, typename T1>
	struct all_same<T0, T1> : std::is_same<T0, T1> {};
}

#endif

#endif
